<?php
class AreaConhecimento {
	private $idArea;
	private $idGrupo;
	private $nomeGrupo;
	private $nomeArea;
	
	/**
     * Retorna o id da Area de Conhecimento .
     * @return int
     * @see $idArea
     */
    public static function getIdArea()
    {
        return $this->idArea;
    }
   
    /**
     * Seta o id da Area de Conhecimento .
     * @see $idArea
     */
    private static function setIdArea($idArea)
    {
		$this->idArea	=	$idArea;
    }
	
	/**
     * Retorna o id da Grupo de Conhecimento .
     * @return int
     * @see $idGrupo
     */
    public static function getIdGrupo()
    {
        return $this->idGrupo;
    }
   
    /**
     * Seta o id da Grupo de Conhecimento .
     * @see $idGrupo
     */
    private static function setIdGrupo($idGrupo)
    {
		$this->idGrupo	=	$idGrupo;
    }
	
	/**
     * Retorna o nome da Area de Conhecimento .
     * @return int
     * @see $nomeArea
     */
    public static function getNomeArea()
    {
        return $this->nomeArea;
    }
   
    /**
     * Seta o nome da Area de Conhecimento .
     * @see $nomeArea
     */
    private static function setNomeArea($nomeArea)
    {
		$this->nomeArea	=	$nomeArea;
    }
	
	/**
     * Retorna o nome da Grupo de Conhecimento .
     * @return int
     * @see $nomeGrupo
     */
    public static function getNomeGrupo()
    {
        return $this->nomeGrupo;
    }
   
    /**
     * Seta o nome da Grupo de Conhecimento .
     * @see $nomeGrupo
     */
    private static function setNomeGrupo($nomeGrupo)
    {
		$this->nomeGrupo	=	$nomeGrupo;
    }
	
	public static function getAreasConhecimento($idGrupo, $ordem, $paginaAtual){
		$strQuery	=	"SELECT * FROM areasConhecimento WHERE idGrupo = " . $idGrupo . " ORDER BY area " . $ordem;
		if($paginaAtual	==	null){
			$strQuery 	.=	';';
			$listaAreas	=	BancoDados::query($strQuery);
			return $listaAreas;
		}
		
		$strQueryQtd 	=	'SELECT COUNT(*) AS qtdAreas FROM (' . $strQuery . ') as tabela;';
		
		$qtdAreas		=	BancoDados::query($strQueryQtd);
		
		$qtdAreas 		=	$qtdAreas[0]['qtdAreas'];
		$qtdPaginas		=	ceil($qtdAreas / __QTD_ITENS_LISTA__);
		if ($qtdPaginas == 0){
			$qtdPaginas = 1;
		}
		
		if ($paginaAtual == 0 || $paginaAtual > $qtdPaginas){
			redireciona(array('404'));
			exit;
		}
		
		$strQuery 	.=	" LIMIT " . __QTD_ITENS_LISTA__ . " OFFSET " . (($paginaAtual-1) * __QTD_ITENS_LISTA__) . ";";
		
		$listaAreas	=	BancoDados::query($strQuery);
		
		if(!is_array($listaAreas)){
			redireciona($_SESSION['constructore']['URLOrigem']);
			exit();
		}
		else{
			foreach($listaAreas as $chave => $area){
				$idArea	=	$area['idArea'];
				$strQuery 	=	"SELECT COUNT(*) as qtdCursos FROM cursos WHERE idArea=" . $idArea . ";";
				$qtdCursos = BancoDados::query($strQuery);
				if(is_array($qtdCursos)){
					$listaAreas[$chave]['qtdCursos']	=	$qtdCursos[0]['qtdCursos'];
				}
				else{
					redireciona($_SESSION['constructore']['URLOrigem']);
					exit;
				}
			}
		}
		
		return array("listaAreas" => $listaAreas, "qtdAreas" => $qtdAreas, "qtdPaginas" => $qtdPaginas);
	}
	
	public static function getGruposConhecimento($ordem, $paginaAtual){
		$strQuery	=	"SELECT * FROM gruposConhecimento ORDER BY grupo ". $ordem;
		if($paginaAtual	==	null){
			$strQuery 	.=	';';
			$listaGrupos	=	BancoDados::query($strQuery);
			return $listaGrupos;
		}
		
		$strQueryQtd 	=	'SELECT COUNT(*) AS qtdGrupos FROM (' . $strQuery . ') as tabela;';
		
		$qtdGrupos		=	BancoDados::query($strQueryQtd);
		
		$qtdGrupos 		=	$qtdGrupos[0]['qtdGrupos'];
		$qtdPaginas		=	ceil($qtdGrupos / __QTD_ITENS_LISTA__);
		if ($qtdPaginas == 0){
			$qtdPaginas = 1;
		}
		
		if ($paginaAtual == 0 || $paginaAtual > $qtdPaginas){
			redireciona(array('404'));
			exit;
		}
		
		$strQuery 	.=	" LIMIT " . __QTD_ITENS_LISTA__ . " OFFSET " . (($paginaAtual-1) * __QTD_ITENS_LISTA__) . ";";
		
		$listaGrupos	=	BancoDados::query($strQuery);
		
			if(!is_array($listaGrupos)){
				redireciona($_SESSION['constructore']['URLOrigem']);
				exit();
			}
			else{
				foreach($listaGrupos as $chave => $grupo){
					$idGrupo	=	$grupo['idGrupo'];
					$strQuery 	=	"SELECT COUNT(*) as qtdAreas FROM areasConhecimento WHERE idGrupo=" . $idGrupo . ";";
					$qtdAreas = BancoDados::query($strQuery);
					if(is_array($qtdAreas)){
						$listaGrupos[$chave]['qtdAreas']	=	$qtdAreas[0]['qtdAreas'];
					}
					else{
						redireciona($_SESSION['constructore']['URLOrigem']);
						exit;
					}
				}
			}
			
			return array("listaGrupos" => $listaGrupos, "qtdGrupos" => $qtdGrupos, "qtdPaginas" => $qtdPaginas);
	}
	
	public static function salvarGrupoConhecimento($grupoConhecimento) {
		if (validaAlfaNumerico($grupoConhecimento)){
			$strQuery	=	"LOCK TABLES gruposConhecimento;";
			if (!($conexao = BancoDados::conectaBancoDados())){
				$strMensagem	=	"Não foi possível estabelecer uma conexão com o Banco de Dados.";
				$_SESSION['constructore']['mensagens']['erroGrupoConhecimento'] = $strMensagem;
				return false;
			}
			$strQuery	=	"INSERT INTO gruposConhecimento VALUES (default, '" . $grupoConhecimento . "');";
			if (!BancoDados::query($strQuery, $conexao)){
				$strMensagem	=	"Não foi possível Inserir o Grupo de Conhecimento corretamente.";
				$_SESSION['constructore']['mensagens']['erroGrupoConhecimento'] = $strMensagem;
				return false;
			}
			$idGrupo 	=	mysql_insert_id($conexao);
			
			$strQuery	=	"UNLOCK TABLES;";
			BancoDados::query($strQuery, $conexao);
			BancoDados:: desconectaBancoDados($conexao);
			
			$area	=	"Outro (" . $grupoConhecimento . ")";
			$strQuery	=	"INSERT INTO areasConhecimento VALUES (default, " . $idGrupo . ", '" . $area . "');";
			if (!BancoDados::query($strQuery)){
				$strQuery	=	"DELETE FROM gruposConhecimento WHERE idGrupo = ". $idGrupo .";";
				if (!BancoDados::query($strQuery)){
					$strMensagem	=	"O Grupo foi inserido incorretamente. Apague-o e insira de novo.";
					$_SESSION['constructore']['mensagens']['erroGrupoConhecimento'] = $strMensagem;
					return false;
				}
				return false;
			}
			$strMensagem	=	"O grupo foi salvo com sucesso.";
			$_SESSION['constructore']['mensagens']['sucessoGrupoConhecimento'] = $strMensagem;
			return true;
		}
		else{
			$strMensagem	=	"Preencha o nome do Grupo corretamente. Não use Caracteres especiais.";
			$_SESSION['constructore']['mensagens']['erroGrupoConhecimento'] = $strMensagem;
			return false;
		}
	}
	
	public static function apagarGrupo($idGrupo) {
		$strQuery	=	"DELETE FROM areasConhecimento WHERE idGrupo = " . $idGrupo . ";";
		if (!BancoDados::query($strQuery)){
			return false;
		}
		$strQuery	=	"DELETE FROM gruposConhecimento WHERE idGrupo = " . $idGrupo . ";";
		if (!BancoDados::query($strQuery)){
			return false;
		}
		
		return true;
	}
	
	public static function apagarArea($idArea) {
		$strQuery	=	"DELETE FROM areasConhecimento WHERE idArea = " . $idArea . ";";
		if (!BancoDados::query($strQuery)){
			return false;
		}	
		return true;
	}
	
	public static function salvarAreaConhecimento($idGrupo, $area) {
		if (validaAlfaNumerico($area)){
			$strQuery	=	"INSERT INTO areasConhecimento VALUES (default, " . $idGrupo . ", '" . $area . "');";
			if (!BancoDados::query($strQuery)){
				return false;
			}
			$strMensagem	=	"A Área foi salva com sucesso.";
			$_SESSION['constructore']['mensagens']['sucessoAreaConhecimento'] = $strMensagem;
			return true;
		}
		else{
			$strMensagem	=	"Preencha o nome da Área corretamente. Não use Caracteres especiais.";
			$_SESSION['constructore']['mensagens']['erroAreaConhecimento'] = $strMensagem;
			return false;
		}
	}
	
	public static function getNomeGrupoConhecimento($idGrupo) {
		$strQuery	=	"SELECT grupo FROM gruposConhecimento WHERE idGrupo= " . $idGrupo . ";";
		
		if (!($resultado = BancoDados::query($strQuery))){
			return false;
		}
		return $resultado[0]['grupo'];
	}
}
?>
